package mx.ipn.persistencia.mysql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import mx.ipn.to.PuestoSalarioTO;
import mx.ipn.to.PuestoTO;
import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.PuestoSalarioDAO;
import mx.ipn.persistencia.dao.TipoEmpleadoDAO;
public class PuestoSalarioDAOMySQL implements PuestoSalarioDAO{
	private static final String INSERT = "INSERT INTO puesto_salario(id_puesto,salario) VALUES(?,?)";
	private static final String DESACTIVA = "DELETE FROM puesto_salario WHERE id_puesto=?";
	private static final String UPDATE = "UPDATE puesto_salario SET id_puesto=?,salario=? WHERE id_puesto=?";
	private static final String FINDBYID = "SELECT * FROM puesto_salario WHERE id_puesto=?";
	private static final String SELECT = "SELECT * FROM puesto_salario";
	public boolean insertPuesto(PuestoSalarioTO puestosalarioTO){
		try {
			Connection conexion = FabricaDeDAOsMySQL.crearConexion();

			PreparedStatement ps = conexion.prepareStatement(INSERT);

			//ps.setShort(1, puestosalarioTO.getIdPuestoSalario());
			ps.setShort(1, puestosalarioTO.getIdPuesto());
			ps.setDouble(2, puestosalarioTO.getSalario());
			ps.executeUpdate();

			ps.close();
			conexion.close();

			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

    public short DesActivaPuesto(short idPuesto){
    	try {
			Connection conexion = FabricaDeDAOsMySQL.crearConexion();

			PreparedStatement ps = conexion.prepareStatement(DESACTIVA);

			ps.setInt(1, idPuesto);

			ps.executeUpdate();

			if (ps.getUpdateCount() == 0) {
				ps.close();
				conexion.close();
				return 0;
			}

			else {
				ps.close();
				conexion.close();
				return 1;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return (short) -1;
		}
    }

	public short updatePuesto(PuestoSalarioTO puestosalarioTO){
		try {
			Connection conexion = FabricaDeDAOsMySQL.crearConexion();

			PreparedStatement ps = conexion.prepareStatement(UPDATE);
			ps.setShort(1, puestosalarioTO.getIdPuestoSalario());
			ps.setShort(2, puestosalarioTO.getIdPuesto());
			ps.setDouble(3, puestosalarioTO.getSalario());
			ps.executeUpdate();

			if (ps.getUpdateCount() == 0) {
				ps.close();
				conexion.close();
				return 0;
			} else {
				ps.close();
				conexion.close();
				return 1;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return (short) -1;
		}
		
	}

	public PuestoSalarioTO findPuestoById(short idps){
		try {
			Connection conexion = FabricaDeDAOsMySQL.crearConexion();

			PreparedStatement ps = conexion.prepareStatement(FINDBYID);

			ps.setShort(1, idps);

			ResultSet rs = ps.executeQuery();
			if (rs.next()) {
				PuestoSalarioTO puestosTO = new PuestoSalarioTO(rs.getShort("id_puesto_salario"),rs.getShort("id_puesto"),rs.getDouble("salario"));

				ps.close();
				conexion.close();
				return puestosTO;
			}

			ps.close();
			conexion.close();
			return null;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public ArrayList<PuestoSalarioTO> selectPuestoSalario(){
		try {
			Connection conexion = FabricaDeDAOsMySQL.crearConexion();
			ArrayList<PuestoSalarioTO> puestosTO = null;
			PuestoSalarioTO puestosTO2 = null;

			PreparedStatement ps = conexion.prepareStatement(SELECT);

			ResultSet rs = ps.executeQuery();

			while (rs.next()) {
				if (puestosTO == null) {
					puestosTO = new ArrayList<PuestoSalarioTO>();
				}

				 puestosTO2 = new PuestoSalarioTO(rs.getShort("id_puesto_salario"),rs.getShort("id_puesto"),rs.getDouble("salario"));

				puestosTO.add(puestosTO2);
			}
			ps.close();
			conexion.close();
			return puestosTO;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}
